ASP.NET Core ব্যবহার করে একটি Web API তৈরি করা অত্যন্ত সহজ এবং কার্যকর। Web API একটি অ্যাপ্লিকেশন যা HTTP প্রোটোকলের মাধ্যমে অন্যান্য অ্যাপ্লিকেশন বা ক্লায়েন্টদের সাথে যোগাযোগ করে। এটি সাধারণত RESTful সেবা প্রদান করতে ব্যবহৃত হয়, যেখানে ডেটা এক্সচেঞ্জ JSON বা XML ফরম্যাটে হয়ে থাকে।
ASP.NET Core-এ Web API তৈরি করতে Controller ক্লাস এবং Action Methods ব্যবহার করা হয়, যেগুলি HTTP রিকোয়েস্ট গ্রহণ করে এবং প্রাসঙ্গিক HTTP রেসপন্স প্রদান করে।
প্রথমে, Visual Studio বা Visual Studio Code ব্যবহার করে একটি নতুন ASP.NET Core Web API প্রজেক্ট তৈরি করুন।
Visual Studio তে:
Visual Studio Code তে:
টার্মিনাল থেকে নিচের কমান্ডটি ব্যবহার করুন:
dotnet new webapi -n MyWebAPI
Web API তৈরি করতে Controller ক্লাস তৈরি করতে হবে, যেখানে HTTP রিকোয়েস্ট হ্যান্ডেল করা হবে। সাধারণত, একটি API Controller ক্লাসে বিভিন্ন HTTP মেথডের জন্য Action Methods থাকে।
উদাহরণস্বরূপ, একটি Product API তৈরি করা যা GET, POST, PUT এবং DELETE রিকোয়েস্ট হ্যান্ডেল করবে:
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace MyWebAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
private static List<Product> products = new List<Product>
{
new Product { Id = 1, Name = "Laptop", Price = 1000 },
new Product { Id = 2, Name = "Phone", Price = 500 }
};
// GET: api/products
[HttpGet]
public ActionResult<IEnumerable<Product>> GetProducts()
{
return Ok(products);
}
// GET: api/products/1
[HttpGet("{id}")]
public ActionResult<Product> GetProduct(int id)
{
var product = products.Find(p => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
// POST: api/products
[HttpPost]
public ActionResult<Product> CreateProduct(Product product)
{
products.Add(product);
return CreatedAtAction(nameof(GetProduct), new { id = product.Id }, product);
}
// PUT: api/products/1
[HttpPut("{id}")]
public IActionResult UpdateProduct(int id, Product product)
{
var existingProduct = products.Find(p => p.Id == id);
if (existingProduct == null)
{
return NotFound();
}
existingProduct.Name = product.Name;
existingProduct.Price = product.Price;
return NoContent();
}
// DELETE: api/products/1
[HttpDelete("{id}")]
public IActionResult DeleteProduct(int id)
{
var product = products.Find(p => p.Id == id);
if (product == null)
{
return NotFound();
}
products.Remove(product);
return NoContent();
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
}
এখানে:
Startup.cs ফাইলে API কনফিগারেশন করা হয়। এখানে, AddControllers এবং UseRouting মেথড ব্যবহার করে API রাউটিং কনফিগার করা হয়।
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers(); // API Controller কনফিগার করা
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting(); // রাউটিং কনফিগার করা
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // Controller Endpoints ম্যাপ করা
});
}
}
আপনি API টেস্ট করার জন্য Postman বা Swagger ব্যবহার করতে পারেন। Swagger হল একটি ডকুমেন্টেশন এবং টেস্টিং টুল যা ASP.NET Core অ্যাপ্লিকেশনের সাথে ইন্টিগ্রেট করা যায়।
Swagger সক্রিয় করতে:
Startup.cs
ফাইলে Swagger এর জন্য কনফিগারেশন যোগ করুন:public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyWebAPI", Version = "v1" });
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseSwagger(); // Swagger সক্রিয় করা
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyWebAPI v1");
});
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
এখন, আপনি http://localhost:5000/swagger এ গিয়ে API টেস্ট করতে পারবেন।
ASP.NET Core-এ Web API তৈরি করা একটি সোজা প্রক্রিয়া, যেখানে Controller এবং Action Methods ব্যবহার করে HTTP রিকোয়েস্ট হ্যান্ডেল করা হয়। GET, POST, PUT, এবং DELETE HTTP মেথডগুলো API রিকোয়েস্ট পরিচালনা করতে ব্যবহৃত হয়। Swagger বা Postman ব্যবহার করে API টেস্ট করা যায় এবং এই API গুলি সাধারণত মোবাইল অ্যাপ্লিকেশন বা ক্লায়েন্ট সিস্টেমের সাথে ডেটা এক্সচেঞ্জের জন্য ব্যবহৃত হয়।
Web API (Application Programming Interface) হলো একটি ইন্টারফেস যা অ্যাপ্লিকেশনগুলোর মধ্যে ডেটা বিনিময় এবং ইন্টারঅ্যাকশন করতে ব্যবহৃত হয়। ASP.NET Core Web API বিশেষভাবে RESTful সার্ভিস তৈরি করার জন্য ব্যবহৃত হয়। এটি ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ সহজ করে এবং বিভিন্ন প্ল্যাটফর্মের অ্যাপ্লিকেশন যেমন ওয়েব, মোবাইল, অথবা ডেস্কটপের জন্য ডেটা প্রদান করে।
Web API সাধারণত REST (Representational State Transfer) আর্কিটেকচারের উপর ভিত্তি করে তৈরি হয়। RESTful API এর বৈশিষ্ট্য:
ASP.NET Core Web API-তে Controllers এবং Routing এর মাধ্যমে রিকোয়েস্ট পরিচালিত হয়:
Web API-তে Controller তৈরি করতে ControllerBase
ক্লাস থেকে ইনহেরিট করা হয়। নিচে একটি সাধারণ উদাহরণ দেওয়া হলো:
[ApiController]
[Route("api/[controller]")]
public class ProductsController : ControllerBase
{
// GET api/products
[HttpGet]
public IActionResult GetProducts()
{
var products = new List<string> { "Product1", "Product2", "Product3" };
return Ok(products); // 200 OK
}
// GET api/products/1
[HttpGet("{id}")]
public IActionResult GetProduct(int id)
{
var product = $"Product{id}";
return Ok(product); // 200 OK
}
// POST api/products
[HttpPost]
public IActionResult CreateProduct([FromBody] string product)
{
// Logic to create product
return CreatedAtAction(nameof(GetProduct), new { id = 1 }, product); // 201 Created
}
}
Routing এর জন্য Startup.cs
ফাইল ব্যবহার করা হয়। উদাহরণ:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
API চালানোর জন্য dotnet run
কমান্ড ব্যবহার করুন এবং ব্রাউজার বা Postman দিয়ে API টেস্ট করুন।
Web API ব্যবহার করে ক্লায়েন্ট অ্যাপ্লিকেশন (যেমন React, Angular) এবং সার্ভার অ্যাপ্লিকেশনের মধ্যে ডেটা আদান-প্রদান করা যায়।
মোবাইল অ্যাপ্লিকেশনের জন্য ডেটা এবং লজিক সরবরাহ করতে RESTful API অত্যন্ত কার্যকর। এটি Android, iOS, এবং অন্যান্য প্ল্যাটফর্মে সমানভাবে কাজ করে।
IoT ডিভাইস থেকে ডেটা সংগ্রহ করতে এবং প্রক্রিয়াজাত করতে Web API ব্যবহার করা হয়।
মাইক্রোসার্ভিসের মাধ্যমে আলাদা আলাদা কাজ পরিচালনার জন্য RESTful Web API ব্যবহার করা হয়।
Web API ক্লাউড-নেটিভ অ্যাপ্লিকেশন তৈরি করতে এবং ডেটা সংযুক্ত করতে ব্যবহৃত হয়।
Web API হলো ডেটা এক্সচেঞ্জ এবং অ্যাপ্লিকেশন ইন্টিগ্রেশনের একটি কার্যকরী উপায়। এটি RESTful আর্কিটেকচারের মাধ্যমে ডেভেলপারদের জন্য একটি সহজ এবং নির্ভরযোগ্য সমাধান প্রদান করে। Web API ASP.NET Core-এর অন্যতম শক্তিশালী ফিচার, যা আধুনিক অ্যাপ্লিকেশন তৈরি করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।
ASP.NET Core এ Web API তৈরি করা খুবই সহজ এবং এর জন্য আমরা সাধারণত API Controllers ব্যবহার করি। RESTful Services হলো একটি আর্কিটেকচারাল স্টাইল যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে কমিউনিকেশন তৈরি করে। API Controllers এর মাধ্যমে আপনি একটি RESTful API তৈরি করতে পারবেন, যা ক্রস-প্ল্যাটফর্ম ক্লায়েন্টের সাথে যোগাযোগ করতে সক্ষম হয়।
ASP.NET Core-এ API Controller একটি বিশেষ ধরনের Controller যা HTTP রিকোয়েস্ট (GET, POST, PUT, DELETE) গ্রহণ করে এবং HTTP রেসপন্স প্রদান করে। এটি মূলত ডেটা প্রসেসিং এবং JSON বা XML আউটপুট প্রদান করে। API Controllers সাধারণত ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান করতে ব্যবহৃত হয়।
API Controller তৈরি করতে, ASP.NET Core এর ControllerBase ক্লাস ইনহেরিট করতে হয়, যা বিশেষভাবে API Controllers-এর জন্য ডিজাইন করা হয়েছে। এটি ActionResult অথবা IActionResult রিটার্ন করে, যা HTTP রেসপন্সের স্ট্যাটাস কোড এবং ডেটা ফেরত পাঠায়।
ধরা যাক, একটি Product মডেল এবং তার জন্য API Controller তৈরি করতে হবে।
Model:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
API Controller:
[Route("api/[controller]")]
[ApiController]
public class ProductsController : ControllerBase
{
private static List<Product> products = new List<Product>
{
new Product { Id = 1, Name = "Laptop", Price = 1500.00M },
new Product { Id = 2, Name = "Phone", Price = 800.00M }
};
// GET api/products
[HttpGet]
public IActionResult Get()
{
return Ok(products); // 200 OK with products data
}
// GET api/products/1
[HttpGet("{id}")]
public IActionResult Get(int id)
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product == null)
{
return NotFound(); // 404 Not Found
}
return Ok(product); // 200 OK with product data
}
// POST api/products
[HttpPost]
public IActionResult Post([FromBody] Product product)
{
if (product == null)
{
return BadRequest(); // 400 Bad Request
}
products.Add(product);
return CreatedAtAction(nameof(Get), new { id = product.Id }, product); // 201 Created
}
// PUT api/products/1
[HttpPut("{id}")]
public IActionResult Put(int id, [FromBody] Product product)
{
var existingProduct = products.FirstOrDefault(p => p.Id == id);
if (existingProduct == null)
{
return NotFound(); // 404 Not Found
}
existingProduct.Name = product.Name;
existingProduct.Price = product.Price;
return NoContent(); // 204 No Content
}
// DELETE api/products/1
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
var product = products.FirstOrDefault(p => p.Id == id);
if (product == null)
{
return NotFound(); // 404 Not Found
}
products.Remove(product);
return NoContent(); // 204 No Content
}
}
[Route("api/[controller]")]
— এটি API Controller এর রাউটিং কনফিগার করে। [controller]
অংশটি নিজে থেকেই "Products" রাউট হিসাবে রূপান্তরিত হয়।Get()
: GET রিকোয়েস্ট হ্যান্ডল করে।Post()
: POST রিকোয়েস্ট হ্যান্ডল করে।Put()
: PUT রিকোয়েস্ট হ্যান্ডল করে।Delete()
: DELETE রিকোয়েস্ট হ্যান্ডল করে।Ok()
: 200 OKNotFound()
: 404 Not FoundBadRequest()
: 400 Bad RequestCreatedAtAction()
: 201 CreatedNoContent()
: 204 No ContentREST (Representational State Transfer) একটি আর্কিটেকচারাল স্টাইল, যা ওয়েব সার্ভিসগুলোর মধ্যে ডেটা অ্যাক্সেস করার প্রক্রিয়া নির্ধারণ করে। RESTful API সার্ভিসগুলো HTTP প্রোটোকল ব্যবহার করে এবং সাধারণত JSON বা XML আউটপুট প্রদান করে। RESTful API তৈরির জন্য কিছু নিয়মাবলী অনুসরণ করা হয়:
এটি একটি সাধারণ উদাহরণ যেখানে GET
এবং POST
মেথড ব্যবহার করা হয়েছে:
/api/products
— সমস্ত প্রোডাক্টের তালিকা ফেরত দেয়।/api/products/{id}
— নির্দিষ্ট প্রোডাক্টের তথ্য ফেরত দেয়।/api/products
— একটি নতুন প্রোডাক্ট তৈরি করে।/api/products/{id}
— বিদ্যমান প্রোডাক্টের তথ্য আপডেট করে।/api/products/{id}
— প্রোডাক্টটি মুছে ফেলে।ASP.NET Core-এ API Controllers এবং RESTful Services তৈরি করা খুবই সহজ এবং এটি অত্যন্ত শক্তিশালী। API Controllers HTTP রিকোয়েস্টগুলোকে প্রসেস করে এবং যথাযথ HTTP রেসপন্স প্রদান করে। RESTful API ডেভেলপমেন্টের জন্য HTTP মেথড এবং রিসোর্স ভিত্তিক রাউটিং ব্যবহার করা হয়, যা ক্লায়েন্ট-সার্ভার কমিউনিকেশনকে সহজ এবং কার্যকরী করে।
JSON (JavaScript Object Notation) একটি লাইটওয়েট ডেটা ইন্টারচেঞ্জ ফরম্যাট যা মানব-readable এবং মেশিন-readable। JSON খুবই জনপ্রিয় এবং ওয়েব অ্যাপ্লিকেশন, API, এবং ডেটাবেসের মধ্যে ডেটা আদান-প্রদানে ব্যবহৃত হয়।
Serialization এবং Deserialization হল দুটি প্রধান প্রসেস যা JSON ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
ASP.NET Core অ্যাপ্লিকেশনগুলিতে JSON Serialization এবং Deserialization সাধারণত System.Text.Json
বা Newtonsoft.Json
লাইব্রেরি ব্যবহার করে করা হয়।
Serialization হল একটি অবজেক্টকে JSON ফরম্যাটে রূপান্তরিত করার প্রক্রিয়া। এটি সাধারণত API রেসপন্স তৈরি করতে, ডেটাবেসে তথ্য সংরক্ষণ করতে অথবা ফাইল সিস্টেমে ডেটা সেভ করার জন্য ব্যবহৃত হয়।
ধরা যাক আমাদের একটি Person
ক্লাস রয়েছে এবং আমরা এই ক্লাসের অবজেক্টকে JSON ফরম্যাটে রূপান্তর করতে চাই।
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
using System.Text.Json;
Person person = new Person
{
Name = "John Doe",
Age = 30,
Email = "john.doe@example.com"
};
// JSON Serialization
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
এখানে, JsonSerializer.Serialize()
মেথডটি Person
অবজেক্টকে JSON স্ট্রিংয়ে রূপান্তরিত করে।
আউটপুট:
{"Name":"John Doe","Age":30,"Email":"john.doe@example.com"}
using Newtonsoft.Json;
Person person = new Person
{
Name = "John Doe",
Age = 30,
Email = "john.doe@example.com"
};
// JSON Serialization
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString);
আউটপুট:
{"Name":"John Doe","Age":30,"Email":"john.doe@example.com"}
Deserialization হল JSON ফরম্যাটে থাকা ডেটাকে একটি অবজেক্ট বা ডেটা স্ট্রাকচারে রূপান্তরিত করার প্রক্রিয়া। এটি সাধারণত API থেকে প্রাপ্ত JSON ডেটাকে অ্যাপ্লিকেশনের মধ্যে ব্যবহারযোগ্য অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়।
ধরা যাক, আমাদের কাছে একটি JSON স্ট্রিং আছে এবং আমরা সেটি Person
অবজেক্টে রূপান্তর করতে চাই।
{
"Name": "John Doe",
"Age": 30,
"Email": "john.doe@example.com"
}
using System.Text.Json;
string jsonString = "{\"Name\":\"John Doe\",\"Age\":30,\"Email\":\"john.doe@example.com\"}";
// JSON Deserialization
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, Email: {person.Email}");
এখানে, JsonSerializer.Deserialize<T>()
মেথডটি JSON স্ট্রিংকে Person
ক্লাসের অবজেক্টে রূপান্তরিত করে।
আউটপুট:
Name: John Doe, Age: 30, Email: john.doe@example.com
using Newtonsoft.Json;
string jsonString = "{\"Name\":\"John Doe\",\"Age\":30,\"Email\":\"john.doe@example.com\"}";
// JSON Deserialization
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}, Email: {person.Email}");
আউটপুট:
Name: John Doe, Age: 30, Email: john.doe@example.com
আপনি JSON এ নেস্টেড অবজেক্টও ব্যবহার করতে পারেন। যখন আপনার Person
ক্লাসের মধ্যে অন্য একটি অবজেক্ট থাকে, তখনও আপনি তা সহজেই Serialize এবং Deserialize করতে পারবেন।
উদাহরণস্বরূপ:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Serialization:
Person person = new Person
{
Name = "John Doe",
Address = new Address { Street = "123 Main St", City = "New York" }
};
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
Deserialization:
string jsonString = "{\"Name\":\"John Doe\",\"Address\":{\"Street\":\"123 Main St\",\"City\":\"New York\"}}";
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Street: {person.Address.Street}, City: {person.Address.City}");
যদি আপনার JSON ডেটাতে তারিখের নির্দিষ্ট ফরম্যাট থাকতে হয়, তাহলে আপনি ডেটা ফরম্যাট কাস্টমাইজ করতে পারেন।
Newtonsoft.Json ব্যবহার করে কাস্টম ডেটা ফরম্যাট:
public class Person
{
public string Name { get; set; }
[JsonConverter(typeof(JsonDateConverter))]
public DateTime DateOfBirth { get; set; }
}
public class JsonDateConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(DateTime);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(((DateTime)value).ToString("yyyy-MM-dd"));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return DateTime.ParseExact((string)reader.Value, "yyyy-MM-dd", null);
}
}
আপনি যদি JSON ডেটাতে null ভ্যালু সহ কাজ করেন, তবে DefaultValueHandling
বা NullValueHandling
অপশন ব্যবহার করে তা কনফিগার করতে পারেন।
JSON Serialization এবং Deserialization হলো দুটি গুরুত্বপূর্ণ প্রক্রিয়া যা ডেটাকে JSON ফরম্যাটে রূপান্তর এবং JSON থেকে অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়। System.Text.Json
এবং Newtonsoft.Json
উভয়ই JSON ডেটা প্রসেস করার জন্য শক্তিশালী লাইব্রেরি, এবং আপনি যে কোনো একটি ব্যবহার করতে পারেন আপনার অ্যাপ্লিকেশন প্রয়োজন অনুযায়ী। JSON Serialization এবং Deserialization-এর মাধ্যমে আপনি অ্যাপ্লিকেশনে ডেটার আদান-প্রদান এবং প্রক্রিয়া সহজভাবে সম্পন্ন করতে পারবেন।
ASP.NET Core-এ API versioning এবং Swagger ব্যবহার করে আপনি API-কে বিভিন্ন সংস্করণে মেইনটেইন করতে পারেন এবং সহজে ডকুমেন্টেশন জেনারেট করতে পারেন। Versioning ডেভেলপারদের একই API-এর একাধিক সংস্করণ পরিচালনা করতে দেয়, যা ক্লায়েন্টদের জন্য সুবিধাজনক এবং অ্যাপ্লিকেশন আপগ্রেডের সময় সমস্যা কমায়। Swagger একটি ওপেন সোর্স টুল যা API-এর জন্য ইন্টারেক্টিভ ডকুমেন্টেশন সরবরাহ করে।
API Versioning একটি পদ্ধতি যা ডেভেলপারদের একই API-এর বিভিন্ন সংস্করণ পরিচালনা করতে সহায়তা করে। এটি নিশ্চিত করে যে ক্লায়েন্ট তাদের নির্ধারিত সংস্করণে অ্যাক্সেস পাচ্ছে এবং নতুন সংস্করণের জন্য পরিবর্তন করার প্রয়োজন নেই।
ASP.NET Core-এ API Versioning ব্যবহারের জন্য নিচের NuGet প্যাকেজ ইন্সটল করুন:
dotnet add package Microsoft.AspNetCore.Mvc.Versioning
Startup.cs
ফাইলে API Versioning কনফিগার করুন:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// API Versioning যোগ করা
services.AddApiVersioning(options =>
{
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
options.ReportApiVersions = true;
});
}
API Versioning ব্যবহারের জন্য Controller-এ [ApiVersion]
অ্যাট্রিবিউট যুক্ত করুন:
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
public class ProductsController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(new { Message = "This is version 1.0" });
}
}
নতুন সংস্করণ তৈরি করতে [ApiVersion]
অ্যাট্রিবিউট দিয়ে আলাদা অ্যাকশন বা Controller তৈরি করুন:
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("2.0")]
public class ProductsV2Controller : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(new { Message = "This is version 2.0" });
}
}
Swagger একটি ওপেন সোর্স টুল যা API-এর জন্য ডকুমেন্টেশন জেনারেট করতে এবং ইন্টারঅ্যাকটিভভাবে টেস্ট করতে ব্যবহৃত হয়। এটি ডেভেলপার এবং ক্লায়েন্টদের API এর ফ্লো বুঝতে সাহায্য করে।
Swagger ব্যবহারের জন্য নিচের NuGet প্যাকেজ ইন্সটল করুন:
dotnet add package Swashbuckle.AspNetCore
Startup.cs
ফাইলে Swagger যোগ করুন:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// Swagger যোগ করা
services.AddSwaggerGen();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
// Swagger Middleware
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
অ্যাপ রান করার পর ব্রাউজারে https://localhost:<port>/swagger
এ যান। আপনি Swagger UI দেখতে পাবেন, যেখানে API-এর সব এন্ডপয়েন্টের ডকুমেন্টেশন থাকবে এবং সেগুলো টেস্ট করার সুযোগ পাবেন।
Swagger-এ Versioning সাপোর্ট করতে নিচের মতো কনফিগারেশন যোগ করুন:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
c.SwaggerDoc("v2", new OpenApiInfo { Title = "My API", Version = "v2" });
});
Middleware-এ Swagger UI কনফিগার করুন:
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
c.SwaggerEndpoint("/swagger/v2/swagger.json", "My API V2");
});
Controller-এ API Versioning ব্যবহারের জন্য [ApiExplorerSettings]
অ্যাট্রিবিউট যোগ করুন:
[ApiExplorerSettings(GroupName = "v1")]
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("1.0")]
public class ProductsController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(new { Message = "This is version 1.0" });
}
}
[ApiExplorerSettings(GroupName = "v2")]
[ApiController]
[Route("api/v{version:apiVersion}/[controller]")]
[ApiVersion("2.0")]
public class ProductsV2Controller : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(new { Message = "This is version 2.0" });
}
}
API Versioning এবং Swagger ASP.NET Core API ডেভেলপমেন্টকে আরও কার্যকর, স্কেলেবল এবং ব্যবহারকারীবান্ধব করে তোলে। এটি API-এর দীর্ঘমেয়াদী ব্যবস্থাপনার জন্য একটি অপরিহার্য পদ্ধতি।
common.read_more